import glob
import os
import shutil
'''
glob 模块：通过 . ? [] 三个通配符查找符合特定规则的文件路径名。
os 模块：包含普遍的操作系统功能。
shutil 模块：提供了一系列对文件和文件集合的高阶操作。
'''

#设置需要遍历整理的文件夹路径
goal_dir = r'/Users/suned/Downloads'
#设置建立分类总文件夹的路径
mkdir_path = r'/Users/suned/code/python/python-automated-office/01自动整理文件/total'

file_num = 0 #统计文件数量
dir_num = 0 #统计文件夹数量

if not os.path.exists(mkdir_path):
    os.mkdir(mkdir_path)

#glob.glob(f'{goal_dir}/**/*', recursive=True) 
#中 **/* 是通配符的重要用法，* 可以代表任意个字符，包括 0 个字符。
#通过 **/* 就能获取给定路径内部任何一级的路径了。
#recursive 参数的设置确保文件的搜索是遍历进行的，而不会只在当前路径同一级就停止
for file in glob.glob('{}/**/*'.format(goal_dir), recursive=True):
    if os.path.isfile(file):
        filename = os.path.basename(file) #获取文件名
        if '.' in filename:
            suffix = filename.split('.')[-1] #获取文件后缀名
        else:
            suffix = 'other' #没有后缀名的文件归类到 other 文件夹
        if not os.path.exists('{}/{}'.format(mkdir_path, suffix)):
            os.mkdir('{}/{}'.format(mkdir_path, suffix)) #创建分类文件夹
            dir_num += 1
        shutil.copy(file, '{}/{}'.format(mkdir_path, suffix)) #移动文件到
        file_num += 1

print('file_num:{}'.format(file_num))
print('dir_num:{}'.format(dir_num))

